package model;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * интерфейс реализующий наблюдателя при использовании парадигмы MVC
 * @version 1.0
 */
public interface InterfaceObserver {   

    /**
     * Обновление состояния наблюдателя при добавлении нового объекта
     * @param io Субъект инициирующий обновление
     * @param newFlight Изменённый объект
     */
    void updateAddFlight(InterfaceObservable io, Flight newFlight);
    
    /**
     * Обновление состояния наблюдателя при удалении объекта
     * @param io Субъект инициирующий обновление
     * @param deleteFlight Изменённый объект
     */
    void updateDeleteFlight(InterfaceObservable io, Flight deleteFlight);
    
    /**
     * Обновление состояния наблюдателя при получении результатов поиска
     * @param io Субъект инициирующий обновление
     * @param allSearchingFlights Найденные объекты
     */
    void updateSearchComplete(InterfaceObservable io, Flights allSearchingFlights);
    
    /**
     * Обновление состояния наблюдателя при изменении i-го элемента
     * @param io Субъект инициирующий обновление
     * @param index Индекс
     * @param changedFlight Новый объект
     */
    void updateUpdateFlight(InterfaceObservable io, int index, Flight changedFlight);
}
